package main

import "fmt"

func main() {

	fmt.Print(jc(5)) //5x4x3x2 = 120

	var sum = func(a int, b int) int {
		return a + b
	}(1, 2)

	fmt.Print(sum) //定义的时候就调用，匿名函数

	var add = func(a int, b int) int {
		return a + b
	}

	add(1, 2) //匿名函数2，将函数赋值给变量，然后变量相当于一个函数

}

func jc(a int) (b int) { //递归完成 阶乘
	if a == 1 {
		return 1
	} else {
		return a * jc(a-1)
	}
}

func jiajian(a int, b int) (int, int) { //多返回值
	return a + b, a - b
}

func add1(a int) (b int) {
	b = a + 1 //参数列表和返回值中申明过的变量，可以直接使用
	return    //返回 变量已经申明了，可以直接写return
}

func sum(a ...int) int { //不定参数
	var sum = 0
	for i := range a {
		sum += i
	}
	return sum
}
